package com.xique.door.biz.service;

import com.xique.common.core.domain.R;
import com.xique.common.core.web.domain.AjaxResult;
import com.xique.door.api.model.LoginAppUser;
import com.xique.door.api.request.user.RemoteUserListRequest;
import com.xique.door.bean.domain.User;
import com.xique.door.bean.dto.DoorImportTemplateDTO;
import com.xique.door.bean.request.user.UserAddRequest;
import com.xique.door.bean.request.user.UserSelectRequest;
import com.xique.door.bean.vo.user.UserListVo;

import java.util.List;

/**
 * @author: caogq
 * @Date: 2022/1/21 16:28
 * @Description:
 */
public interface IUserBizService {

    /**
     * @description: 添加用户
     * @author caogq
     * @date: 2022/1/25 15:11
     * @Param
     */
    AjaxResult addUser(UserAddRequest request);

    /**
     * @description: 用户详情
     * @author caogq
     * @date: 2022/1/25 15:11
     * @Param
     */
    AjaxResult detail(Long id);

    /**
     * @description: 用户列表
     * @author caogq
     * @date: 2022/1/25 15:11
     */
    List<UserListVo> selectConditionUserList(UserSelectRequest request);

    /**
     * @description: 批量删除用户
     * @author caogq
     * @date: 2022/3/28 19:15
     */
    AjaxResult remove(String ids);

    /**
     * @description: 修改用户
     * @author caogq
     * @date: 2022/3/28 19:15
     * @Param
     */
    AjaxResult updateUser(User user);

    /**
     * @description: 下发用户
     * @author caogq
     * @date: 2022/3/28 19:15
     * @Param
     */
    AjaxResult downUser(User user);



    /** ========================================================= adminApi/v1 =========================================================== **/

    /**
     * 下载导入模板
     * @author shd
     * @date 2022/3/23 10:20
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    List<DoorImportTemplateDTO> getDownloadImportTemplateData();

    /**
     * 导入门禁数据
     * @author shd
     * @date 2022/3/23 13:51
     * @param list
     * @param updateSupport
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult importData(List<DoorImportTemplateDTO> list, boolean updateSupport);

    /**
     * 更新用户访客码
     * @author shd
     * @date 2022/4/21 15:45
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult updateInvitationCode();


    /** ========================================================= openApi =========================================================== **/

    /**
     * 查询用户列表
     * @author shd
     * @date 2022/3/10 15:57
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getUserList(RemoteUserListRequest request);


    /** ========================================================= miniprogram =========================================================== **/

    /**
     * 获取用户信息
     * @author shd
     * @date 2022/4/18 10:31
     * @param loginName
     * @return com.xique.common.core.domain.R<com.xique.door.api.model.LoginAppUser>
     */
    R<LoginAppUser> getUserInfo(String loginName);
}
